A main focus of the contemporary semiconductor industry is the creation of smaller and more efficient memory modules. These efforts are often frustrated by cross talk and skew. Cross talk is an inductive effect which can arise when a variable current flows through a conductor. Variable current creates a corresponding variable magnetic field surrounding the conductor capable of inducing a disruptive signal in any adjacent conductors passing through the magnetic field. As a consequence, the placement of conductors in a memory module must be carefully engineered in order to maintain suitable distances of separation between conductors to minimize the effects of cross talk.
Skew is differential delay between two signals forced to travel different path lengths. One technique to eliminate skew is to make the path lengths along which signals are coupled the same length. In this way, signal travel time will be the same, thus eliminating any differential delay. Overall, the necessity of such careful considerations in both distancing conductors from each other and in creating equivalent path lengths to minimize the effects of cross talk and skew complicates efforts to create effective memory modules with small dimensions.
Generally, memory modules are comprised of individual memory devices coupled in parallel on a circuit board. These memory devices can be dynamic random access memory (“DRAM”) devices suitable for a wide variety of applications. A partial top plan view of one type of memory module known in the art is shown in FIG. 1. As illustrated, two registered double in-line memory modules (DIMM) 100a, 100b include a plurality of memory devices 102-116 arranged on a circuit board 140 and connected by a command/address bus 142 to a register 144. The memory devices 102-116 and the conductors of the command/address bus 142 are situated on the circuit board 140 with enough space between them to minimize any cross talk. The register 144 receives command signals applied through a control bus 146 and address signals applied through an address bus 148 from an external memory controller (not shown).
As illustrated in the registered memory module 100 shown in FIG. 1, the command signals applied to the register 144 include a row address strobe signal (“RAS#”) (the “#” indicates the signal is active low), a column address strobe signal (“CAS#”), clock enable signals (“CKE0” and “CKE7”), a write enable signal (“WE#”) and chip select signals (“S0#”-“S7#”) to activate the DRAM devices 102-116, respectively. Other signals not latched by the register 144 include a clock (“CK0”) signal, data signals (“DQ0-DQ63”) corresponding to an 64-bit data word applied to the modules through a data bus 150, and a number of other signals that are not pertinent to the present discussion. In this registered DRAM module, bank address signals (“B0-B7”) corresponding to an 8-bit bank address and row/column address signals (“A0-A12”) corresponding to a 13-bit address are also applied to the register 144 through the address bus 148.
In operation, when a computer processor reads data from, or writes data to, a specific memory address in a particular memory device 102-116, it sends a signal to the memory controller (not shown) over a host bus (also not shown). The request is analyzed by the memory controller, which applies corresponding address signals A0-A12 and the previously described command signals to the registered DIMMs 100a-b. These signals are latched into the registers 144 of both of these modules 100a-b, with each module 100a-b receiving a different pair of chip select signals designating which of the modules 100a-b is to be accessed. However, only one of the memory modules 100a-b is selected for a memory access or for a memory writing by switching its device select signals SO# and Sl# active low. An appropriate command signal is then applied to the command/address bus 142 by the register 144 to all of the memory devices 102-116 in the module 100.
During write operations, the command signal includes address signals and command signals enabling the memory controller to access and write to appropriate memory cells in each of the memory devices 102-116. Data bits DQ0-DQ63 from the data bus 150 are then applied over an internal data path (not shown for the sake of clarity) to the memory cells in each of the memory devices 102-116. The internal data path consists of individual traces running from the memory devices 102-116 to signal traces (not shown) on an edge of the circuit board 140. During write operations the register 144 also operates to generate the appropriate command and timing signals to control the memory devices 102-116.
During read operations, the command signal includes address signals and command signals enabling the memory controller to access and read appropriate memory cells in each of the memory devices 102-116. The read data stored in the addressed memory cells are then applied over the internal data path to the data bus 150 and the memory controller as read data bits DQ0-DQ64.
As can be seen in FIG. 1, the off-module command and address signals are applied to the midpoint of the module 100 such that the length of the control bus 146 and the address bus 148 on the module 100 is short. However, since the memory devices 102-116 are disposed on either side of the register 144, the path lengths of the command/address bus 142 to the memory devices 102-116 are of different lengths. As a result, address and command signals coupled from the register 144 to the different memory devices 102-116 are susceptible to skew. For example, the difference in delay in coupling command and address signals from the register 144 to the memory devices 102 and 108 makes it difficult to capture the command and address signals at both memory devices with a common clock signal. This potential for signal skew can seriously limit the operating speed of the memory devices 102-116.
One way to solve this problem is to increase the path lengths of the command/address bus 142 coupled to the devices 104-114 to make them equal to the path length of the command/address bus 142 to the devices 102 and 116. While such a solution is effective in ameliorating skew, it requires the placement of a greater length of conductive lines on the module 100. This consumes more space, increases propagation delay, and may adversely affect signal integrity.
Further, as memory bus speeds continue to increase, a need will arise to buffer data signals, i.e. a data buffer device or devices will be included to perform a similar function for data signals as the register device does for command and address signals. The data buffer function may reside in one or more devices, which may or may not be integrated with the command address register. Seen in this light, modules based on a memory hub having data buffers aligned in the same general layout as shown for the memory devices in FIG. 1 would encounter the same problems for data signals as were described above for command and address signals.
What is needed is a memory module that minimizes skew and maximizes signal integrity between the hub and memory devices as well as between the controller and the module.